﻿#pragma once
#include<assert.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

typedef int LTDatatype;
typedef struct ListNode
{
	LTDatatype data;
	struct ListNode* next;
	struct ListNode* prev;
}LTNode;
//初始化
//LTNode* LTInit(LTNode** phead);
LTNode* LTInit();
LTNode* BuyNode(LTDatatype x);

void LTDesTroy(LTNode* phead);
//void LTInit(LTNode** pphead);

void LTPrint(LTNode* phead);
bool LTEmpty(LTNode* phead);

//尾插
//phead节点不会发生改变，参数就为一级
//phead节点发生改变，参数就为二级
void LTPushBack(LTNode* phead, LTDatatype x);
void LTPushFront(LTNode* phead, LTDatatype x);

//尾删
void LTPopBack(LTNode* phead);
void LTPopFront(LTNode* phead);

//在pos位置之后插⼊数据
void LTInsert(LTNode* pos, LTDatatype x);
void LTErase(LTNode* pos);


LTNode* LTFind(LTNode* phead, LTDatatype x);